package com.pengy.shengxian.mapper;

import com.pengy.shengxian.entity.GoodsInfo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

@Mapper
public interface GoodsInfoMapper {
    
    /**
     * 插入商品信息记录
     * @param goodsInfo 商品信息对象
     * @return 影响的行数
     */
    int insert(GoodsInfo goodsInfo);
    
    /**
     * 批量插入商品信息记录
     * @param goodsInfos 商品信息列表
     * @return 影响的行数
     */
    int batchInsert(@Param("list") List<GoodsInfo> goodsInfos);
    
    /**
     * 删除所有商品信息记录
     * @return 影响的行数
     */
    int deleteAll();
    
    /**
     * 根据商品编码查询规格
     * @param goodsCode 商品编码
     * @return 规格信息
     */
    String selectSpecsByGoodsCode(@Param("goodsCode") String goodsCode);
    
    /**
     * 根据商品编码查询商品类型名称
     * @param goodsCode 商品编码
     * @return 商品类型名称
     */
    String selectTypeNameByGoodsCode(@Param("goodsCode") String goodsCode);
    
    /**
     * 批量根据商品编码查询商品编码和税率（goodsinfo_reserve3）
     * @param codes 商品编码列表
     * @return 商品编码和税率的列表
     */
    List<Map<String, String>> selectGoodsCodeAndRateByGoodsCodes(@Param("codes") List<String> codes);
    
    /**
     * 批量根据商品编码查询商品编码和单价（goodsinfo_reserve2）
     * @param codes 商品编码列表
     * @return List<Map<String, String>>，每个map包含code和price
     */
    List<Map<String, String>> selectGoodsCodeAndPriceByGoodsCodes(@Param("codes") List<String> codes);
    
    /**
     * 批量根据商品编码查询商品信息
     * @param codes 商品编码列表
     * @return 商品信息列表
     */
    List<GoodsInfo> selectByGoodsCodes(@Param("codes") List<String> codes);
    
    /**
     * 检查商品编码是否存在
     * @param codes 商品编码列表
     * @return 存在的商品编码列表
     */
    List<String> checkExistingGoodsCodes(@Param("codes") List<String> codes);
} 